﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/**
 * 扩展方法：
 * 扩展方法( this参数 )
    方法必需是公有、静态的，即被public static所修饰必需是形参列表中的第一个，由this修饰
    必需由一个静态类(一般类名为SomeTypeExtension)来统一收纳对SomeType类型的扩展方法
 */
namespace P18_12 {
    internal class Program {
        static void Main(string[] args) {

            double x = 3.14159;
            //四舍五入，保留4位小数，这里是调用的源码api
            //double y = Math.Round(x,4);
            //这里就是调用的下面的方法，只传入一个参数是因为第一个参数就是 x 本身
            double y = x.Round(3);
            Console.WriteLine(y);
            Console.ReadLine();
        }
    }

    static class DoubleExtension {
        /**
         * 这是一个扩展方法
         */
        public static double Round(this double input, int digits) { 
            double result = Math.Round((double)input, digits);
            return result;
        }
    }
}
